#unitTest #CSharp
http://www.codedata.com.tw/…/csharp-test-legacy-code-2-sta…/
當 production code 使用 simple factory pattern 時,context 勢必就會與 static factory function 直接耦合。
而這樣的耦合會導致可測試性的降低,因為無法抽換 context 的外部依賴物件或資源。如果硬是為了可測試性,而導入不必要的中介層或是抽象工廠,則反而會使 production code over-design, 難以閱讀或維護。
可以參考這篇文章,在 simple factory 上加入 internal 的 setter 來讓測試程式可以注入外部依賴物件,就可以在不變更既存 production code 的對外 API 設計,額外加入供測試程式注入的 function 即可。